/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package credit.paysystem;

import Modelo.Productos;
import java.math.BigDecimal;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.ResourceBundle;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.TextField;
import javafx.scene.control.TitledPane;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.layout.AnchorPane;
import javax.swing.JOptionPane;
import mx.its.LnLocal.ProductosLnLocal;
import mx.its.ln.ProductosLN;

/**
 * FXML Controller class
 *
 * @author Grnmnd
 */
public class ProductosController implements Initializable {

    /**
     * Initializes the controller class.
     */
    @FXML
    AnchorPane VentanaProductoss;
    @FXML
    Button agregar;
    @FXML
    Button editar;
    @FXML
    Button eliminar;
    @FXML
    TextField criterioBusqueda;
    @FXML
    Label Productoss;
    @FXML
    TableView TablaProductoss;
    @FXML
    TitledPane Internal;
    @FXML
    TextField CampoId;
    @FXML
    TextField CampoNombre;
    @FXML
    TextField CampoPrecio;
    @FXML
    Label Encabezado;
    @FXML
    Button Agregar;
    @FXML
    Button Guardar;
    Productos cs;

    @FXML
    public void actualizarLsita() {

        TableColumn ID = new TableColumn("ID");
        ID.setCellValueFactory(
                new PropertyValueFactory<Productos, String>("id"));

        TableColumn Nombre = new TableColumn("NOMBRE");
        Nombre.setCellValueFactory(
                new PropertyValueFactory<Productos, String>("nombre"));
        Nombre.setPrefWidth(200);
        TableColumn Precio = new TableColumn("Precio");
        Precio.setCellValueFactory(
                new PropertyValueFactory<Productos, Long>("precio"));
        Precio.setPrefWidth(200);

        ProductosLnLocal productosLnLocal = new ProductosLN();

        List<Productos> lst = new ArrayList<>();

        for (Productos c : productosLnLocal.getList()) {
            lst.add(c);
        }

        ObservableList<Productos> k = FXCollections.observableArrayList(lst);
        TablaProductoss.setItems(k);

        TablaProductoss.getColumns().setAll(ID, Nombre, Precio);


    }

    @FXML
    public void Agregar() {
        System.out.println("Agregar.....");
        ProductosLnLocal perfilln = new ProductosLN();
        Productos c = new Productos();

        if (!CampoNombre.getText().isEmpty() && !CampoPrecio.getText().isEmpty()) {
            c.setNombre(CampoNombre.getText());
            try {
                if (Double.parseDouble(CampoPrecio.getText()) > 0) {
                    c.setPrecio(BigDecimal.valueOf(Double.parseDouble(CampoPrecio.getText())));

                    perfilln.registrar(c);
                    int x = JOptionPane.showConfirmDialog(null, "REGISTRO COMPLETO \n ¿¿desea agregar otro usurio??");
                    if (x != 0) {
                        Cancelar();
                    }
                    CampoId.setText("");
                    CampoNombre.setText("");
                    CampoPrecio.setText("");
                    CampoNombre.requestFocus();
                } else {
                    JOptionPane.showMessageDialog(null, "Precio Invalido");
                }

            } catch (Exception m) {
                System.out.println(m);
                JOptionPane.showMessageDialog(null, "Precio Invalido");
            }
        } else {
            JOptionPane.showMessageDialog(null, "El campo nombre y precio no deben estar vacios");
        }
    }

    @FXML
    public void Guardar() {
        System.out.println("GUARDANDO CAMBIOS...");


        ProductosLnLocal carreraln = new ProductosLN();
//        if (!CampoNombre.getText().isEmpty()) {
//            System.out.println("poniendo values");
//            cs.setNombre(CampoNombre.getText());
//            cs.setPrecio(BigDecimal.valueOf(Double.parseDouble(CampoPrecio.getText())));
//            carreraln.editar(cs);
//            int x = JOptionPane.showConfirmDialog(null, "REGISTRO COMPLETO \n ¿¿desea modificar mas campos??");
//            if (x != 0) {
//                Cancelar();
//            }
//
//        } else {
//            JOptionPane.showMessageDialog(null, "El campo nombre no debe estar vacio");
//        }
        if (!CampoNombre.getText().isEmpty() && !CampoPrecio.getText().isEmpty()) {
            cs.setNombre(CampoNombre.getText());
            try {
                if (Double.parseDouble(CampoPrecio.getText()) > 0) {
                    cs.setPrecio(BigDecimal.valueOf(Double.parseDouble(CampoPrecio.getText())));

                    carreraln.editar(cs);
                    int x = JOptionPane.showConfirmDialog(null, "REGISTRO COMPLETO \n ¿¿desea agregar otro usurio??");
                    if (x != 0) {
                        Cancelar();
                    }
                    CampoId.setText("");
                    CampoNombre.setText("");
                    CampoPrecio.setText("");
                    CampoNombre.requestFocus();
                } else {
                    JOptionPane.showMessageDialog(null, "Precio Invalido");
                }

            } catch (Exception m) {
                System.out.println(m);
                JOptionPane.showMessageDialog(null, "Precio Invalido");
            }
        } else {
            JOptionPane.showMessageDialog(null, "El campo nombre y precio no deben estar vacios");
        }

    }

    @FXML
    public void Editar() {
        try {
            cs = (Productos) TablaProductoss.getSelectionModel().getSelectedItem();
            if (!cs.equals(null)) {
                Encabezado.setText("Edicion de Productos");
                Guardar.setVisible(true);
                Internal.setVisible(true);
                agregar.setDisable(true);
                editar.setDisable(true);
                eliminar.setDisable(true);
                CampoNombre.setText(cs.getNombre());
                CampoId.setText(cs.getIdProductos() + "");
                CampoPrecio.setText(cs.getPrecio() + "");
            } else {
                JOptionPane.showMessageDialog(null, "Seleccione un producto");
            }
        } catch (Exception f) {
            System.out.println(f);
        }
    }

    @FXML
    public void Nuevo() {
        try {
            Encabezado.setText("Agregar Productos");
            Agregar.setVisible(true);
            Internal.setVisible(true);
            agregar.setDisable(true);
            editar.setDisable(true);
            eliminar.setDisable(true);
        } catch (Exception f) {
            System.out.println(f);
        }
    }

    @FXML
    public void Cancelar() {
        CampoId.setText("");
        CampoNombre.setText("");
        Encabezado.setText(null);
        Agregar.setVisible(false);
        Guardar.setVisible(false);
        Internal.setVisible(false);
        agregar.setDisable(false);
        editar.setDisable(false);
        eliminar.setDisable(false);
    }

    @FXML
    public void oEliminar() {
        try {
            Productos c = (Productos) TablaProductoss.getSelectionModel().getSelectedItem();
            System.out.println(c);
            int x = JOptionPane.showConfirmDialog(null, "¿¿Esta Ud. Seguro que desea ELIMINAR el Producto??");
            if (x == 0) {
                ProductosLnLocal carreraln = new ProductosLN();
                System.out.println("borrando a " + c);
                carreraln.eliminar(c);
                System.out.println("borrado");
                actualizarLsita();
            }
        } catch (Exception f) {
            System.out.println(f);
        }
    }

    public void buscar() {
        ProductosLnLocal productosLnLocal = new ProductosLN();
        try {
            String id = criterioBusqueda.getText();
            if (productosLnLocal.getPorPalabra(id) == null) {
                JOptionPane.showMessageDialog(null, "No hay Coincidencias");
                System.out.println("No Encontrado");
            } else {
                System.out.println("Encontrado");
                for (Productos c : productosLnLocal.getPorPalabra(id)) {

                    TableColumn ID = new TableColumn("ID");
                    ID.setCellValueFactory(
                            new PropertyValueFactory<Productos, String>("id"));
                    TableColumn Nombre = new TableColumn("Nombre");
                    Nombre.setCellValueFactory(
                            new PropertyValueFactory<Productos, String>("Nombre"));
                    Nombre.setPrefWidth(200);
                    TableColumn Precio = new TableColumn("Precio");
                    Precio.setCellValueFactory(
                            new PropertyValueFactory<Productos, Long>("precio"));
                    Precio.setPrefWidth(200);


                    ObservableList<Productos> k = FXCollections.observableArrayList(productosLnLocal.getPorPalabra(id));
                    TablaProductoss.setItems(k);

                    TablaProductoss.getColumns().setAll(ID, Nombre, Precio);
                }
            }
        } catch (Exception ex) {
            System.out.println(ex);
            System.out.println("No Encontrado");
        }

    }

    @Override
    public void initialize(URL url, ResourceBundle rb) {
    }
}
